Video encoding and transcoding is useful for consumers and professionals. Although special purpose processors are available to speed and enhance video processing, this hardware is too expensive to be considered by most consumers using personal computers (PCs). The speed and quality of PC-level video processing using current methods and hardware are not optimal.
One area that would be desirable to improve is video streaming. For example, video encoders are designed to output a steam of information that is compliant with a particular video compression standard (such as VC-1, H.264, MPEG-2, and others). The way in which the output stream is produced is not dictated by any standard. Therefore, video encoders have been continually refined to produce high quality results (and/or low bitrate) with low overhead (for example, low CPU cycles) within the constraints imposed available by hardware and software tools. However, current video encoders are not capable of performing some functions, such as encoding a video efficiently enough to allow the video to be streamed in near real time. There are a variety of screen capture applications in existence. The traditional way to perform screen capture is by “grabbing” frames from the screen (video) buffer based on a periodic timer interrupt, but this merely captures one screen at a time and is not fast enough to allow streaming of captured video.
Another area that would be desirable to improve is the efficiency of motion estimation. Conventional video encoders perform motion estimation by searching each macroblock in a frame, determining its motion vector, cost in bits, etc., performing a subtraction, and getting a residual. A macroblock is typically 16×16 pixels. The motion vector and residual are encoded to represent the image. Typical video encoders are slow when they produce very high quality video. One of the reasons for this is that many brute force computations are performed, attempting many solutions and picking the best one. It is desirable to have a video encoding method that is optimized to reduce the complexity of computation cycles while still attaining very high quality video.
The drawings represent aspects of various embodiments for the purpose of disclosing the invention as claimed, but are not intended to be limiting in any way.